Le liste di Python a livello sottostante non sono semplici liste concatenate, ma organizzate in modo altamente strutturato ArrayList. La veritร fondamentale รจ che occupa uno spazio contiguo in memoria. Qui non vengono memorizzati gli oggetti stessi, ma i riferimenti agli oggetti riferimenti๏ผๅจ C ่ฏญ่จๅฑ้ขๅณไธบๆ้๏ผใ่ฟ็ง่ฎพ่ฎกๅฎ็ฐไบๅผๆๆฐๆฎ็็ปไธ็ฎก็๏ผๆ ่ฎบๆฏไธๅ่ฒ๏ผRGB๏ผๅ ็ป่ฟๆฏๅคๆ็ๅ ๅฏๅฏ้ฅ (Key)๏ผ้ฝๅช้ๅ ๆฎไธไธชๅบๅฎๅคงๅฐ็ๆ้ไฝใ
Matematica dell'indirizzamento e compromesso prestazioni
- $O(1)$ accesso casuale: tramite la formula $\text{indirizzo elemento} = \text{indirizzo iniziale} + \text{indice} \times \text{dimensione}$, il CPU puรฒ localizzare istantaneamente.
- Analisi ammortizzata (Amortized Analysis): utilizzando una strategia di sovracapacitร , anche se un singolo inserimento potrebbe essere $O(n)$, il costo totale รจ $n + \sum_{j=0}^{\lg n} 2^j = 3n$, garantendo una performance media di $O(1)$ per l'aggiunta.
- Limitazioni di inserimento: come mostrato nella Figura 8-2, nell'inserimento in qualsiasi posizione devono essere spostati tutti i puntatori successivi, con complessitร $O(n)$.
Confronto tra algoritmi
A differenza dell'accesso indice in ArrayList ($O(1)$), la ricerca in una skip list ha complessitร temporale $O(\log n)$. Il fondamento dell'algoritmo RSA โ l'algoritmo euclideo โ si basa sul fatto che $gcd(a,0)=a$. Tutti questi algoritmi operano in questo piccolo spazio di memoria.